import request from '@/utils/request'

/**
 * 创建随堂测试
 * @param {Object} data 测试数据
 * @returns {Promise} 请求Promise
 */
export function createQuiz(data) {
  return request({
    url: '/quiz/create',
    method: 'post',
    data
  })
}

/**
 * 获取测试列表
 * @returns {Promise} 请求Promise
 */
export function getQuizList() {
  return request({
    url: '/quiz/list',
    method: 'get'
  })
}

/**
 * 根据教师ID获取测试列表
 * @param {String} teacherId 教师ID
 * @returns {Promise} 请求Promise
 */
export function getTeacherQuizList(teacherId) {
  return request({
    url: `/quiz/teacher/${teacherId}`,
    method: 'get'
  })
}

/**
 * 根据课程ID和班级ID获取测试列表
 * @param {String} courseId 课程ID
 * @param {Number} classId 班级ID
 * @returns {Promise} 请求Promise
 */
export function getCourseQuizList(courseId, classId) {
  return request({
    url: '/quiz/course',
    method: 'get',
    params: { courseId, classId }
  })
}

/**
 * 获取学生可参与的测试列表
 * @param {String} courseId 课程ID
 * @param {Number} classId 班级ID
 * @param {String} studentId 学生ID
 * @returns {Promise} 请求Promise
 */
export function getStudentQuizList(courseId, classId, studentId) {
  return request({
    url: '/quiz/student/list',
    method: 'get',
    params: { courseId, classId, studentId }
  })
}

/**
 * 获取测试详情
 * @param {Number} quizId 测试ID
 * @returns {Promise} 请求Promise
 */
export function getQuizDetail(quizId) {
  return request({
    url: `/quiz/detail/${quizId}`,
    method: 'get'
  })
}

/**
 * 开始测试
 * @param {Number} quizId 测试ID
 * @returns {Promise} 请求Promise
 */
export function startQuiz(quizId) {
  return request({
    url: `/quiz/start/${quizId}`,
    method: 'put'
  })
}

/**
 * 结束测试
 * @param {Number} quizId 测试ID
 * @returns {Promise} 请求Promise
 */
export function endQuiz(quizId) {
  return request({
    url: `/quiz/end/${quizId}`,
    method: 'put'
  })
}

/**
 * 删除测试
 * @param {Number} quizId 测试ID
 * @returns {Promise} 请求Promise
 */
export function deleteQuiz(quizId) {
  return request({
    url: `/quiz/${quizId}`,
    method: 'delete'
  })
}

/**
 * 获取测试题目列表
 * @param {Number} quizId 测试ID
 * @returns {Promise} 请求Promise
 */
export function getQuizQuestions(quizId) {
  return request({
    url: `/quiz/questions/${quizId}`,
    method: 'get'
  })
}

/**
 * 添加题目
 * @param {Object} data 题目数据
 * @returns {Promise} 请求Promise
 */
export function addQuestion(data) {
  return request({
    url: '/quiz/question/add',
    method: 'post',
    data
  })
}

/**
 * 删除题目
 * @param {Number} questionId 题目ID
 * @returns {Promise} 请求Promise
 */
export function deleteQuestion(questionId) {
  return request({
    url: `/quiz/question/${questionId}`,
    method: 'delete'
  })
}

/**
 * 提交测试答案
 * @param {Object} data 提交数据
 * @returns {Promise} 请求Promise
 */
export function submitQuiz(data) {
  return request({
    url: '/quiz/submit',
    method: 'post',
    data
  })
}

/**
 * 获取测试提交列表
 * @param {Number} quizId 测试ID
 * @returns {Promise} 请求Promise
 */
export function getQuizSubmissions(quizId) {
  return request({
    url: `/quiz/submissions/${quizId}`,
    method: 'get'
  })
}

/**
 * 获取学生的测试提交记录
 * @param {Number} quizId 测试ID
 * @param {String} studentId 学生ID
 * @returns {Promise} 请求Promise
 */
export function getStudentSubmission(quizId, studentId) {
  return request({
    url: '/quiz/student/submission',
    method: 'get',
    params: { quizId, studentId }
  })
}

/**
 * 获取测试统计信息
 * @param {Number} quizId 测试ID
 * @returns {Promise} 请求Promise
 */
export function getQuizStats(quizId) {
  return request({
    url: `/quiz/stats/${quizId}`,
    method: 'get'
  })
}

/**
 * 检查学生是否已提交测试
 * @param {Number} quizId 测试ID
 * @param {String} studentId 学生ID
 * @returns {Promise} 请求Promise
 */
export function isSubmitted(quizId, studentId) {
  return request({
    url: '/quiz/submitted',
    method: 'get',
    params: { quizId, studentId }
  })
}